/**
 * 版权所有 2009-2015 中国中医科学院中医药信息研究所 何前锋 frontpeak@yahoo.com.cn
 **/
package cn.ac.cintcm.sh.service;

import java.util.List;

import cn.ac.cintcm.sh.dao.ViewDao;
import cn.ac.cintcm.sh.domain.Rule;
import cn.ac.cintcm.sh.domain.View;

public class ViewService {
    
    private ViewDao viewDao = new ViewDao();
    
    /**
     * 取得所有的观点
     * @return 观点的id号以及观点名称
     */
    public List<View> getViews() {
        
        return viewDao.getViews();
    }
    
    /**
     * 取得某个具体的观点，实例化具体的折算规则
     * @param viewid
     * @return 完整的折算观点
     */
    public View getView(String viewid) {
        View v = null;
        if (viewid != null) {
            v = viewDao.getView(Integer.parseInt(viewid));
        }
        return v;
    }
    
    /**
     * 添加剂量折算观点
     * @param name 剂量观点的名称
     * @return 新剂量观点的id
     */
    public int addView(String name) {
        View v = viewDao.addView(name);
        return v.getId();
    }
    
    /**
     * 删除剂量观点
     * @param id 剂量观点的id号
     * @return 删除的剂量观点
     */
    public View deleteView(String id) {
        View v = null;
        if (id != null) {
            v = viewDao.deleteView(Integer.parseInt(id));
        }
        return v;
    }
    
    /**
     * 更新剂量观点的名称
     * @param id 剂量观点的id号
     * @param name 剂量观点的名称
     * @return 剂量观点
     */
    public View updateView(String id, String name) {
        View v = null;
        String n = null;
        if (name != null) {
            n = name.trim();
        }
        if (id != null && !n.equals("")) {
            v = viewDao.updateView(id, n);
        }
        return v;
    }
    
    /**
     * 增加某个观点的剂量折算规则
     * @param viewid 剂量折算观点的id
     * @param unit 原始单位 如，"枚"
     * @param quantity 折算比例 如，1枚=2克，这里的2就是折算的比例
     * @param herbName 规则所适合的中药名称
     * @return 新增加规则的id号
     */
    public int addRule(String viewid, String unit, String quantity, String herbName) {
        int id = -1;
        if (viewid != null && unit != null && quantity != null ) {
            unit = unit.trim();
            quantity = quantity.trim();
            herbName = herbName.trim();
            if (!unit.equals("") && !quantity.equals("")) {
                id = viewDao.addRule(viewid, unit, quantity, herbName);
            }
        }
        return id;
    }
    
    /**
     * 删除规则
     * @param viewid 规则所在的观点id
     * @param ruleid 规则id
     * @return 删除的规则
     */
    public Rule deleteRule(String viewid, String ruleid) {
        Rule r = null;
        if (viewid != null && ruleid != null) {
            r = viewDao.deleteRule(viewid, ruleid);
        }
        return r;
    }
    
    /**
     * 更新某个观点的剂量折算规则
     * @param ruleid 折算规则的id
     * @param unit 原始单位 如，"枚"
     * @param quantity 折算比例 如，1枚=2克，这里的2就是折算的比例
     * @param herbName 规则所适合的中药名称
     * @return 更新的规则
     */
    public Rule updateRule(String ruleid, String unit, String quantity, String herbName) {
        Rule r = null;
        if (ruleid != null && unit != null && quantity != null ) {
            unit = unit.trim();
            quantity = quantity.trim();
            if (herbName != null) {
                herbName = herbName.trim();
            } else {
                herbName = "";
            }
            if (!unit.equals("") && !quantity.equals("")) {
                r = viewDao.updateRule(ruleid, unit, quantity, herbName);
            }
        }
        return r;
    }
}